home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok15.lha / KURVE / DOC < prev    next >
Text File  |  1993-08-15  |  16KB  |  358 lines

  1. Das Programm "Kurve" ist Public Domain. Wenn Ihr es weitergebt, dann
  2. vergeßt bitte den Source Code nicht. Dokumentiert bitte eventuelle
  3. Änderungen. Wenn Ihr Verbesserungen habt, dann schickt Sie mir bitte zu
  4. ( Wer programmiert eine symbolische Differentation ?).
  5.  
  6. Danke, Jörg
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                             Bedienungsanleitung
  13.                                     für
  14.                           Kurvendiskussion V 2.94
  15.  
  16.  
  17. Das Programm wird durch Anklicken des entsprechenden ICONS von der
  18. Workbench gestartet. Im CLI gibt man einfach "KURVE"<RETURN> ein. In
  19. dem logischen Gerät LIBS: muß sich die MathTrans.library befinden. 
  20.  
  21. Nachdem das Programm erfolgreich geladen wurde, erscheint das erste
  22. WINDOW mit dem Titel "Eingabe der Funktion". In der Mitte befindet sich
  23. ein STRINGADGET, das als Defaultinhalt die Funktion "sin(x)" anzeigt.
  24. Mittels Maus und Tastatur kann nun die zu untersuchende Funktion
  25. eingegeben werden. Folgende Eingaben werden später erkannt:
  26.  
  27. SQRT()= Wurzel ()    SIN()= Sinus()        COS()= Cosinus()
  28. TAN() = Tangens()    ASN()= Arcussinus()    ACS()= Arcuscosinus()
  29. ATN() = Arcutangens()    EXP()= e^()        LN() = Loge|()|
  30. LG()  = Log10|()|    ABS()= |()|        FAK()= x!
  31. PI    = Zahl pi         EE   = Zahl e         X    = Variable
  32.  
  33. sowie ROUND() = kaufmännische Rundung und TRUNC() = ganzzahliger
  34. Anteil.
  35. Folgende Binäroperationen sind möglich:
  36. + , - , * , / , sowie:
  37.     a^b für ganzzahlige b
  38.     a&b wie a^b, aber für nicht ganzzahlige b (Wurzelziehen)
  39.  
  40. Die Eingabe kann auch in Kleinbuchstaben erfolgen. Wenn Leerzeichen in
  41. der Funktion vorkommen, so muß das erste und das letzte  Zeichen ein -
  42. "-, also ein Anführungszeichen oben sein.
  43. Die Eingabe wird durch das Anklicken des "OK- GADGET" abgeschlossen.
  44. DAS WINDOW wird dann geschlossen und ein neues WINDOW mit dem
  45. Hauptmenü geöffnet.
  46. Mit dem Druck auf den rechten Mausknopf erscheinen 2 MENÜLEISTEN:
  47. PROJECT und MATHE. Diese Leisten beinhalten insgesamt 20 ITEMS, die
  48. das gesamte Programm steuern.
  49.  
  50. 01. Eingabe der Funktion
  51. Das erste WINDOW, das beim Starten des Programmes gezeigt wurde
  52. erscheint wieder. Es kann eine neue Funktion eingegeben werden.
  53.  
  54. 02. Konstantenausgabe
  55. Die wichtigsten Konstanten des Programmes werden ausgegeben. Nach   
  56. Drücken des RETURN-GADGETS (unten in der Mitte) erscheint wieder das
  57. Hauptmenü.
  58.  
  59. 03. ENDE
  60. Das Programm wird beendet.
  61.  
  62. 04. Info
  63. Es wird ein neues Fenster mit der Copyright-Meldung ausgegeben. Nach
  64. dem Anklicken des CLOSEWINDOW-GADGETS (links oben) erscheint
  65. wieder das Hauptmenü.
  66.  
  67. 05. Dateiabfrage an
  68. Ist dieser Punkt gewählt, so wird dies durch ein Checkhäkchen angezeigt.
  69. Bei Anwahl eines weiteren Menüs, das eine Bildschirmausgabe im CLI-
  70. WINDOW bewirkt, wird in diesem Menü vorher gefragt, wohin die Ausgabe
  71. gelenkt werden soll. Diese Abfrage ist nicht sehr komfortabel, und man
  72. darf hier keinen Fehler machen, da keine Korrekturmöglichkeit eingebaut
  73. ist.
  74. Wählen Sie bitte:
  75.  
  76. PRT:  für den angeschlossenen Drucker über Preferences,
  77. PAR:  für die Parallelschnittstelle (ohne Preferences),
  78. SER:  für die serielle Schmnittstelle,
  79. ENTER, RETURN für Ausgabe auf dem Bildschirm,
  80. oder jeden AMIGADOS - Dateinamen für die Ausgabe auf ein ASCII -
  81. FILE (z.B. "DF1:wertetabelle"). Ist der letzte Buchstabe ein ".", so wird
  82. eine Defaultextension ".kurve" an den Dateinamen angehängt.
  83.  
  84. 06. Dateiabfrage aus
  85. Wählt die normale Ausgabe auf dem Bildschirm an. Dies ist die
  86. Voreinstellung.
  87.  
  88. 07. SAVE Screen
  89. Es erscheint ein STRINGGADGET, in das der Name des ILBM-Files einegegen
  90. werden kann. Vorgegeben ist hier schon der aktuelle Versionsname, so daß
  91. nur noch das DEVICE hinzugefügt werden muß.
  92.  
  93. 08. PRINT screen
  94. Druckt eine Hardcopy des aktuellen Plotterscreens über die Preferences aus.
  95.  
  96. 09. PROLOG aufrufen
  97. Da ich eine symbolische Differentation in Modula2 noch nicht
  98. programmieren konnte, ruft dieser Menüpunkt die DEMO-Version des
  99. Philgerma PROLOG auf. Dabei wird automatisch die Datei
  100. PROLOG:examples/symbdiff.pro consultiert. Nun kann eine symbolisch
  101. Ableitung über Prolog berechnet werden. Dieser Aufruf funktioniert nur,
  102. wenn genügend Speicher vorhanden ist. Ich benutze 3 MB.
  103.  
  104. NACHTRAG: Die Benutzung der M2-Amiga Modula-2 Version 3.2d vom 01.11.88
  105. führt bei Aufruf von DOS.Execute zum Absturz. Jedenfalls bei meiner
  106. Gerätekonfiguration: A2000B, 2MB RAM-Erweiterung, PC-Karte, 20MB-Harddisk
  107. auf PC-Seite. Wer Informationen zu diesem Fehler hat, der schreibe mir doch
  108. bitte, dsa Meyer+Voigt bis jetzt noch nicht geantwortet haben.
  109.  
  110.  
  111. 10. Wertetabelle
  112.  
  113. A. Funktion
  114.  
  115. Es wird ein WINDOW für die Intervalleingabe geöffnet. Alle nachfolgenden
  116. Untermenüs außer "Funktionsplotter" und "Symmetrie" benutzen dieses
  117. WINDOW. Es besteht aus folgenden GADGETS:
  118.  
  119. Xmin : Hier wird die linke Grenze des zu untersuchenden Intervalls
  120.            eingegeben.
  121. Xmax : Hier wird die rechte Seite des zu untersuchenden Intervalls
  122.         eingegeben.
  123. dX   : Hier wird die Schrittweite der Untersuchung eingegeben. Hier ist
  124.         schon jeweils ein "vernünftiger" Wert eingetragen.
  125. Art  : Wird hier "0" eingetragen, so verwendet das Programm zur
  126.        Nullstellensuche in den Untermenüs "Nullstellen" bis
  127.          "Wendestellen", sowie bei "Monotonie" eine Intervallschachtelung,
  128.        ansonsten die NEWTON-Methode. Bei den Untermenüpunkten
  129.        "Wertetabelle","Symmetrie" und "Integration" hat dieses GADGET
  130.        keine Auswirkungen.
  131.  
  132. Nach erfolgter Eingabe kann die Ausgabe der Wertetabelle mit dem ENDE-
  133. GADGET oder dem CLOSEWINDOW-GADGET gestartet werden. Nun gibt
  134. das Programm folgende Werte aus: x, f(x), f'(x), f''(x), f'''(x).
  135. Beachten Sie bitte, das die Berechnung der Ableitungen über einen
  136. erweiterten Differenzenquotienten erfolgt. Dies und die Benutzung der
  137. FFP- Zahlen führt zu Fehlern. Die Genauigkeit kann man Überprüfen,
  138. indem man selber die exakte Ableitung einer Funktion bildet und deren
  139. Funktionswerte mit denen des Programmes vergleicht. Meistens beträgt die
  140. Genauigkeit ca. 2-3 Stellen. Man muß jedoch beachten, daß eine Ausgabe
  141. von "-0.999" mit "-1.000" gleichzusetzen ist. Hier hilft ein wenig Probieren
  142. weiter, um an Erfahrung zu gewinnen.
  143. Nach Beendigung der Ausgabe erscheint ein kleines BORDERLESS-WINDOW
  144. unten in der Mitte, worin sich das RETURN-GADGET befindet. Nach
  145. Betätigung erscheint wieder das HauptmenüWINDOW. Die letzte Ausgabe
  146. ist aber nicht gelöscht, solange Sie keine weitere Ausgabe verlangt haben.
  147. Sie können das DEPTH-GADGET des HauptMENÜWINDOWS dazu benutzen,
  148. die Ausgabe noch einmal anzusehen. Dieses Letztgesagte gilt auch für alle
  149. anderen Ausgaben im CLI-WINDOW.
  150.  
  151. B. Integralfunktion
  152.  
  153. Es ist ab Version 2.90 auch möglich Integralfunktionen zu berechnen. Hierzu
  154. wird der Wert der festen unteren Grenze gegeben. Danach ist der Ablauf
  155. identisch wie unter A.
  156.  
  157.  
  158.  
  159. 11. Extremstellen
  160. Intervalleingabe wie unter 7. Es werden die Hoch- und Tiefpunkte einer
  161. Funktion im gegebenen Intervall berechnet. So bedeutet die Ausgabe:
  162. H( 0.000,1.500 ) einen Hochpunkt an dieser Stelle. T( , ) zeigt einen
  163. Tiefpunkt an. Die Rückkehr in das HauptmenüWINDOW wie unter 7.
  164.  
  165. 12. Wendestellen
  166. Wie 8., nur werden hier die Wendepunkte W( , ) und die Sattelpunkte
  167. S( , ) berechnet.
  168.  
  169.  
  170. 13. Integration
  171. Eingabe des Intervalls wie unter 7. beschrieben. Hier bedeutet dX jedoch
  172. die relative Genauigkeit des Ergebnisses. Voreinstellung ist "0.001".
  173. Rückkehr ins HauptmenüWINDOW wie unter 7. beschrieben.
  174.  
  175. 14. Symmetrie
  176. Die Funktion wird auf Achsensymmetrie zur Y-Achse und Punktsymmetrie
  177. zum Ursprung untersucht. Hier finden die KONSTANTEN nopoints (Anzahl
  178. der untersuchten Punkte) und d (Step der x-Koordinate) Verwendung.
  179.  
  180. 15. Monotonie
  181. Die Funktion wird im angegebenen Intervall auf Monotonie untersucht.
  182. Hierbei findet nur eine andere Art der Ausgabe desselben Ergebnisses wie
  183. bei Punkt 08. "Extremstellen" statt.
  184.  
  185. 16. Funktionsplotter
  186. Der Funktionsplotter besitzt eine eigene Intervalleingaberoutine. Folgende
  187. Werte werden einegeben:
  188.  
  189. Xmin   = linke Grenze des Koordinatenkreuzes
  190. Xmax   = rechte Grenze des Koordinatenkreuzes
  191. dX     = Step der ganzzahligen Unterteilungen auf der X-Achse
  192. Ymin   = untere Grenze des Koordinatenkreuzes
  193. Ymax   = obere Grenze des Koordinatenkreuzes
  194. dY     = Step der ganzzahligen UnterTeilungen auf der Y-Achse
  195. Abltg  = 0 = f(x), 1 = f'(x), 2 = f''(x), 3 = f'''(x), 4 = Integralf'on
  196. Punkte = Anzahl der berechneten Koordinaten, dazwischen wird eine
  197.             Gerade gezeichnet
  198.  
  199. Wird bei "Genau" eine "0" eingegeben (Voreinstellung), so wird der durch
  200. "Punkte" bestimmte Step-Wert der X-Koordinaten nicht verändert. Hat
  201. man nun eine Funktion, die sich dem Rand des Koordinatenkreuzes sehr
  202. steil nähert, deren Ableitung also sehr groß ist, dann wird der Graph der
  203. Funktion nicht bis an die Ränder des Koordinatenkreuzes herangezeichnet.
  204. Die Wahl von "1" bei "Genau" bewirkt in diesem Falle eine automatische
  205. Verkleinerung des x-Steps, so daß der Graph der Funktion möglichst weit
  206. an den Rand des Koordinatenkreuzes herangezeichnet wird. Nach einer fest
  207. eingestellten Anzahl (=2) von mit kleinerem Step berechneten Punkten
  208. versucht das Programm den Step wieder zu erhöhen, bis schließlich der alte
  209. Wert wieder erreicht ist.
  210. Nach dem Anklicken des ENDE-GADGETS oder des CLOSEWINDOW-
  211. GADGETS wird der Graph der Funktion in einen neuen SCREEN
  212. gezeichnet. Dieser SCREEN bleibt auch bei anderen Untermenüaktionen
  213. erhalten, so daß man ihn jederzeit mit <Left-AMIGA><M> in den
  214. Vodergrund holen kann. Will man ihn in den Hintergrund bringen so
  215. drückt man <Left-AMIA><N> oder wählt das entsprechende DEPTH-
  216. GADGET in der Titelzeile des SCREENS.
  217. Der Titel des SCREENS zeigt die Funktion an, die beim erstmaligen
  218. Aufruf oder beim Neuzeichnen die aktuelle Funktion war.
  219.  
  220. Nachdem der Graph fertiggezeichnet ist, öffnet das Programm ein neues
  221. WINDOW mit einem PLOTTER-Untermenü. Sie haben nun folgende
  222. Möglichkeiten:
  223.  
  224.  
  225.  
  226. 1. Den aktuellen SCREEN löschen und danach eine erneute
  227. Intervalleingabe und Neuzeichnen des SCREENS mit den neuen Werten.
  228.  
  229. 2. Weiter im alten SCREEN zeichnen. Sie werden in einem weiteren
  230. WINDOW gefragt welche Ableitung Sie jetzt in den SCREEN dazuzeichnen
  231. wollen. Danach erfolgt wieder der Rücksprung in das PLOTTER-
  232. Untermenü.
  233.  
  234. 3. Rückkehr in das HauptmenüWINDOW. Hier können Sie z.B. eine andere
  235. Funktion eingeben und danach wieder den Funktionsplotter anwählen.
  236. Wenn Sie nun im PLOTTER-Untermenü "Weiter im alten Screen zeichnen"
  237. anklicken, so stellen Sie den neuen Funktionsgraphen zusätzlich zum
  238. alten Graphen im alten Koordinatenkreuz dar.
  239.  
  240.  
  241. Es ist jetzt auch möglich, in einen Ausschnitt der Funktion zu zoomen.
  242. Man wählt dazu den Menüpunkt Funktionsplotter an. Wenn schon ein
  243. Screen existiert, dann wird diese gezeigt. Man geht mit dem
  244. Koordinatenkreuz in die linke obere Ecke des gewünschten Ausschnitts
  245. und drückt den linken Mausknopf. Danach bewegt man das
  246. Koordinatenkreuz in die recht untere Ecke des Ausschnitts und drückt
  247. erneut die Maus. Die Koordinaten des Ausschnittes werden automatisch in
  248. die STRINGGADGETS des Koordinateneingabemenüs kopiert und können
  249. hier nocheinmal verändert werden. Ein Druck auf das OK-GADGET
  250. zeichnet den neuen SCREEN.
  251.  
  252. 17. Koordinatenanzeige
  253. Man den aktuellen Plotterscreen ansehen und erhält ein
  254. Hilfskoordinatenkreuz gezeichnet. Diese Funktion vermeidet das Speilen
  255. mit <Left-Amiga> <n> oder <m>.
  256.  
  257. 18. Binäre Tabelle
  258. Im Fach E-Technik oder bei uns an der Uni in Rechner-Organisation braucht
  259. man häufiger eine Wertetabelle zu einer gegebenen binären Funktion. Ich
  260. habe des wegen den Funktionsparser umgeschrieben und um die Boolschen
  261. Funktionen erweitert. Folgende Funktionen werden unterstützt:
  262. + = ODER (OR) , % = exklusives ODER (EXOR) , * = UND (AND)
  263. & = NAND      , / = NOR                    , ! = NICHT (NOT)
  264. Eine Beispielfunktion sähe so aus: a%b*c+d
  265. Beim ! (NOT), welches dem unärem Minus im normalen FFP-Parser entspricht
  266. enthält der Parser noch einen Bug. Es ist notwendig, daß der gesamte zu
  267. negierende Term in Klammern gesetzt wird, auch dann, wenn es nur eine
  268. einzige Variable ist: NOT a = !(a) , NOT (a AND b) = !(a*b).
  269. Nach der Eingabe der Funktion in das große STRINGGADGET müßen die
  270. verwendeten Variablen (maximal 5) in die unteren kleineren GADGETS
  271. eingetragen werden
  272.  
  273.               -----------------------------
  274. f(x) =       |        !(a%b+c)*d         |
  275.               ----------------------------
  276.  
  277.              ----  ----  ----  ----  ----
  278.              | a|  | b|  | c|  | d|  |  |
  279.              ----  ----  ----  ----  ----
  280.  
  281. Nach Betätigen des OK-GADGETS wird die Tabelle ausgedruckt. RETURN führt
  282. zum Hauptmenü zurück.
  283.  
  284.  
  285. 19. Lineare Gleichungssystem
  286. In diesem Unterprogramm können beliebige Lineare Gleichungssysteme mit
  287. maximal 10 Zeilen oder Spalten gelöst werden.
  288. Nach Anwählen des Menüs werden 3 WINDOWS geöffnet. Das erste besteht aus
  289. 100 STRINGGADGETS in einer 10 * 10 Matrix. Das zweite (unten links) ist das
  290. Ausgabe Window, währen das dritte das Kommando Window ist.
  291. Nachdem in die STRINGGADGETS Werte eingetragen wurden, kann man über das
  292. Kommando Window durch Anklicken des entsprechenden GADGETS folgende
  293. Aktionen bewirken:
  294. LGS lösen und ausgeben, Determinante des LGS ermitteln, Rang der Matrix
  295. ermitteln und das komplette LGS löschen.
  296. Die Betätigung des QUIT-GADGETS oder des WINDOWCLOSE-GADGETS führt in das
  297. Hauptmenü zurück.
  298. Die Berechnungsroutinen stammen aus den MathTreasures von Meyer & Voigt.
  299. Das Programm entspricht weitestgehend dem mitgelieferten Demoprogramm
  300. LGSBoss von Ernst Heinz (01.04.88). Die Erweiterungen im Bezug auf die
  301. Umstellung auf INTUITION stammen zu 100 % von mir. Falls es rechtliche
  302. Probleme geben sollte, so bitte ich um eine Benachrichtigung.
  303.  
  304.  
  305. Soweit zur Kurzbeschreibung.
  306. Mir ist zwar klar, daß das Programm nicht das Schnellste seiner Art ist,
  307. jedoch erfordern die Berechnung der Ableitungen und vor allem das
  308. Parsen des eingegebenen Funktionsstrings eine erhebliche Rechenzeit.
  309. Je kürzer die Funktion ist, desto schneller werden die Berechnungen.
  310. Auch das Vermeiden von überflüssigen Klammerausdrücken erhöht die
  311. Rechengeschwindgkeit. Zweiter Nachteil ist die relative Ungenauigkeit der
  312. konkreten Zahlenergebnisse. Diese resultieren aus der Verwendung der
  313. FFP-Routinen von Motorola, die ja nur einen Bereich von -1.0E19 bis
  314. 1.0E19 erlauben, dafür aber wiederum schneller sind. Auch sind für Sie
  315. mehr Transzendente Funktionen festimplementiert, so daß diese nicht in
  316. einer langsamen Hochsprache von mir geschrieben werden mußten, da ich
  317. keine 68000-Maschinensprache beherrsche. Ein weiterer Grund ist die
  318. Verwendung einer numerischen Näherung für die Ableitungen anstatt des
  319. exakten Wertes, da ich noch keine Routine zum Differenzieren eines
  320. Strings eingebaut habe.
  321. Alles in allem hoffe ich, daß der Kompromiß gelungen ist. Mir hat das
  322. Programm schon bei einigen Aufgaben und Mathezetteln geholfen und ich
  323. hoffe, daß andere es auch ein wenig nützlich finden werden.
  324.  
  325.  
  326. Die Parserroutine habe ich nach der Vorlage des Programmes Parse.c von
  327. John M. Olson, 1547 Jamestown Drive, Salt Lake City, USA von Fish-Disk
  328. 92 nach M2-Modula2 umgesetzt und modifiziert. Ohne diese Vorlage wäre
  329. dieses gesamte Programm in dieser Art wahrscheinlich nicht zustande
  330. gekommen, also Leute : schreibt Public-Domain Programme um Eure Erfahrungen
  331. weiterzugeben.
  332.  
  333. Das Copyright des Programmes bleibt weiterhin bei mir. Es ist jedoch Public
  334. Domain, also kopiert es möglichst oft. Aber bitte laßt meine Copyright
  335. Zeile drin. Insgesamt arbeite ich an diesem Programm mit vielen
  336. Unterbrechungen ca. 3 Jahre. Zuerst auf einem Sinclair ZX Spectrum in
  337. BASIC, dann in AMIGA-Basic und zum Schluß in MODULA-2. Wenn Ihr Anregungen
  338. oder Beschwerden habt, dann meldet Euch bei mir (vorzugsweise in den
  339. Semesterferien). Am liebsten sind mir Erweiterungen und ausgemerzte Bugs.
  340. So das soll es jetzt auch gewesen sein, viel Spaß
  341.  
  342. ---
  343.    |   | |
  344.    |
  345.   ---  ---   |      ---
  346.    |  |   |  |--   |   |
  347.    |  |   |  |     |   |
  348. ---    ---   |      ---|
  349.                        |
  350.                        |
  351.                     ---
  352.  
  353. Jörg Wesemann
  354. Auf der Heide 10
  355. D-2807 Achim - Baden
  356.  
  357. Telefon : 04202 / 70658
  358.